//
//  ViewController.m
//  SaveData
//
//  Created by student on 16/3/14.
//  Copyright © 2016年 NIIT. All rights reserved.
//

#import "ViewController.h"
#import "StudentModel.h"

@interface ViewController ()

@property (weak, nonatomic) IBOutlet UITextField *idTextField;
@property (weak, nonatomic) IBOutlet UITextField *nameTextField;
@property (weak, nonatomic) IBOutlet UITextField *ageTextField;

@end

@implementation ViewController

#pragma mark - NSUserDefault方式
#define kStuId @"StuId"
#define kStuName @"StuName"
#define kStuAge @"StuAge"

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    // 得到沙盒目录下的文件夹数组
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    // Documents目录
    NSString *docPath1 = paths[0];
    // 沙盒目录NSHomeDirectory()
    NSString *docPath2 = [NSHomeDirectory() stringByAppendingString:@"/Documents"];
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}
- (IBAction)save2:(id)sender {
    NSDictionary *dict = @{@"stuId":self.idTextField.text,
                           @"stuName":self.nameTextField.text,
                           @"stuAge":self.ageTextField.text};
    
    // stringByAppendingPathComponent 自动中间加个 /
    NSString *docPath = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents"];
    NSString *filePath = [docPath stringByAppendingPathComponent:@"student.plist"];
    NSLog(@"存到:%@",filePath);
    
    [dict writeToFile:filePath atomically:YES];
}
- (IBAction)save1:(id)sender {
    // 得到NSUserDefault单例对象
    NSUserDefaults *d = [NSUserDefaults standardUserDefaults];
    // 使用key将信息写入
    // setObject 数据是NSString NSNumber NSArray NSDictionary类型
    [d setObject:self.idTextField.text forKey:kStuId];
    [d setObject:self.nameTextField.text forKey:kStuName];
    [d setObject:self.ageTextField.text forKey:kStuAge];
    
    // 也可以存入基本类型(实际上是nsnumber类型存储)
    //    [d setInteger:5 forKey:@"number1"];//
    //    [d setDouble:10.5 forKey:@"number2"];//
    [d setBool:YES forKey:@"number3"];//
    
    [d synchronize];// 同步(存盘一下)

}
- (IBAction)read1:(id)sender {
    NSUserDefaults *d = [NSUserDefaults standardUserDefaults];
    
    self.idTextField.text = [d objectForKey:kStuId];
    self.nameTextField.text = [d objectForKey:kStuName];
    self.ageTextField.text = [d objectForKey:kStuAge];
    
    // 取出基本类型
    //    [d integerForKey:@"nubmer1"];
    //    [d doubleForKey:@"number2"];
    //    [d boolForKey:@"number3"];
}
- (IBAction)read2:(id)sender {
    NSString *docPath = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents"];
    NSString *filePath = [docPath stringByAppendingPathComponent:@"student.plist"];
    NSLog(@"读取:%@",filePath);
    NSDictionary *dict = [NSDictionary dictionaryWithContentsOfFile:filePath];
    
    self.idTextField.text = dict[@"stuId"];
    self.nameTextField.text = dict[@"stuName"];
    self.ageTextField.text = dict[@"stuAge"];
    
}
- (IBAction)save3:(id)sender {
    NSString *docPath = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents"];
    NSString *filePath = [docPath stringByAppendingPathComponent:@"student.arch"];
    NSLog(@"存到:%@",filePath);
    
    StudentModel *m = [[StudentModel alloc] initWithId:self.idTextField.text
                                               andName:self.nameTextField.text
                                                andAge:self.ageTextField.text];
    
    NSMutableData *mData = [NSMutableData data];
    NSKeyedArchiver *arch = [[NSKeyedArchiver alloc] initForWritingWithMutableData:mData];
    [arch encodeObject:m forKey:@"Student"];
    [arch finishEncoding];
    
    [mData writeToFile:filePath atomically:YES];
}
- (IBAction)read3:(id)sender {
    NSString *docPath = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents"];
    NSString *filePath = [docPath stringByAppendingPathComponent:@"student.arch"];
    
    NSData *data = [NSData dataWithContentsOfFile:filePath];
    
    NSKeyedUnarchiver *unArch = [[NSKeyedUnarchiver alloc] initForReadingWithData:data];
    StudentModel *stu = [unArch decodeObjectForKey:@"Student"];
    [unArch finishDecoding];
    
    self.idTextField.text = stu.stuId;
    self.nameTextField.text = stu.stuName;
    self.ageTextField.text = stu.stuAge;
    
}

@end
